DB の データ大量追加時の表示の停止
カテゴリー: ぷろぐらみんぐ
2005-09-03
コントロールに接続しないで
内部だけでいままでDBを利用していたので知りませんでした
最近コントロールに接続してつなぐといっしょにカーソル動いて
おそいなぁ って思っていましたが
昨日 気がつきました。
var
aBookmark: TBookmark;
begin
{ メモリを割り当て,値を代入する }
aBookmark := Table1.GetBookmark;
with Table1 do
begin
{ コンポーネントとの接続を一時的に解除します }
DisableControls;
try
while Not(Eof) do begin
// 処理
Next;
end;
finally
{ カレントレコードのコントロールを更新します }
GotoBookmark(aBookmark);
{ データコントロールのレコード表示をオンにする }
EnableControls;
{ブックマークのメモリ割り当てを解除する }
FreeBookmark(aBookmark);
end; // with Table1
内部だけでいままでDBを利用していたので知りませんでした
最近コントロールに接続してつなぐといっしょにカーソル動いて
おそいなぁ って思っていましたが
昨日 気がつきました。
劇的に速度が上昇しました♪
元の位置にカーソル戻そうかなぁと思って
TBookmarkの使い方のヘルプをみにいって知りました。
古いバージョン意外は
Bookmark プロパティがあるので
Withを使うときは、名前の衝突に要注意
(コンパイルエラーで教えてくれますが・・・)
元の位置にカーソル戻そうかなぁと思って
TBookmarkの使い方のヘルプをみにいって知りました。
古いバージョン意外は
Bookmark プロパティがあるので
Withを使うときは、名前の衝突に要注意
(コンパイルエラーで教えてくれますが・・・)
var
aBookmark: TBookmark;
begin
{ メモリを割り当て,値を代入する }
aBookmark := Table1.GetBookmark;
with Table1 do
begin
{ コンポーネントとの接続を一時的に解除します }
DisableControls;
try
while Not(Eof) do begin
// 処理
Next;
end;
finally
{ カレントレコードのコントロールを更新します }
GotoBookmark(aBookmark);
{ データコントロールのレコード表示をオンにする }
EnableControls;
{ブックマークのメモリ割り当てを解除する }
FreeBookmark(aBookmark);
end; // with Table1